package org.llc.authorization.config.extend;

import org.llc.common.starter.model.UserAccount;

/**
 * 扩展集成验证器
 *
 * @author llc
 * @date 2020/2/27 10:51
 * @since 1.0.0
 */
public interface IntegrationAuthenticator {

    /**
     * 处理集成认证
     * @param entity 集成认证实体
     * @return org.llc.common.model.UserAccount
     * @author llc
     * @date 2020/2/27 10:54
     */
    UserAccount authenticate(IntegrationAuthenticationEntity entity);

    /**
     * 预处理（准备）
     * @param entity 集成认证实体
     * @author llc
     * @date 2020/2/27 10:55
     */
    void prepare(IntegrationAuthenticationEntity entity);

    /**
     * 判断是否支持集成认证类型
     * @param entity 集成认证实体
     * @return boolean
     * @author llc
     * @date 2020/2/27 10:56
     */
    boolean support(IntegrationAuthenticationEntity entity);

    /**
     * 认证结束后执行
     * @param entity  集成认证实体
     * @author llc
     * @date 2020/2/27 10:56
     */
    void complete(IntegrationAuthenticationEntity entity);
}
